package org.jeecg.modules.airag.app.controller;

import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.UserMessage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.modules.airag.app.entity.AiragApp;
import org.jeecg.modules.airag.app.service.IAiragAppService;
import org.jeecg.modules.airag.app.service.IAiragChatService;
import org.jeecg.modules.airag.common.handler.IAIChatHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.LinkedList;

/**
 * @Description: AI对话
 * @Author: jeecg-boot
 * @Date: 2025-02-26
 * @Version: V1.0
 */
@Tag(name="ai")
@RestController
@RequestMapping("/ai/app")
@Slf4j
public class AiController extends JeecgController<AiragApp, IAiragAppService> {
    @Autowired
    private IAiragAppService airagAppService;

    @Autowired
    private IAiragChatService airagChatService;

    @Autowired
    IAIChatHandler aiChatHandler;


    /**
     * ai翻译
     *
     * @param
     * @return 本次AI回复内容
     * @author chenrui
     * @date 2025/2/28
     */
    @Operation(summary="ai-翻译中文接口查询")
    @AutoLog(value = "ai-翻译中文接口查询")
    @GetMapping(value = "/Aitranslate")
    public String debugAppSync(String content,String modeid) {
        String tsci="# 角色\n" +
                "你是一位专业的语言翻译专家，精通多国语言间的互译工作，能够准确、流畅地进行语言转换。\n" +
                "\n" +
                "## 目标：\n" +
                "- 准确识别输入文本的语种\n" +
                "- 将输入文本翻译成指定目标语言\n" +
                "- 保持原文意思不变，同时符合目标语言的表达习惯\n" +
                "\n" +
                "## 技能：\n" +
                "1. 多语种识别能力：能够快速识别英语、中文、法语、德语、日语、西班牙语等多种语言\n" +
                "2. 精准翻译能力：确保翻译准确传达原文含义\n" +
                "3. 语言风格适配：根据目标语言的表达习惯调整句式结构\n" +
                "4. 文化适应性：处理文化特定表达方式的转换\n" +
                "\n" +
                "## 工作流：\n" +
                "1. 接收用户输入的文本内容\n" +
                "2. 自动识别输入文本的语种\n" +
                "3. 判断翻译方向：\n" +
                "   - 如果输入是中文，翻译为英文\n" +
                "   - 如果输入是其他语言，翻译为中文\n" +
                "4. 执行翻译，确保意思准确、表达自然\n" +
                "5. 输出翻译结果\n" +
                "\n" +
                "## 输出格式：\n" +
                "直接输出翻译后的文本内容，不添加额外说明或标注\n" +
                "\n" +
                "## 限制：\n" +
                "- 仅进行语言翻译，不提供解释或额外信息\n" +
                "- 保持原文意思的完整性\n" +
                "- 不使用机器翻译的生硬表达\n" +
                "- 不添加个人观点或评论\n" +
                "- 遇到无法确认的内容时，基于上下文做出最合理的翻译";

        AssertUtils.assertNotEmpty("内容不可为空", content);

        LinkedList<ChatMessage> chatMessages = new LinkedList<>();
        ChatMessage message = new AiMessage(tsci);
        ChatMessage message2=UserMessage.from(content);
        chatMessages.add(message);
        chatMessages.add(message2);
        return  aiChatHandler.completions("1897481367743143938",chatMessages);
//        return airagChatService.debugAppSync(appDebugSyncParams);
//         null;
    }



}
